package Futbol_Liga;
/**
 * Klase honek jardunaldia jokatzen den data eta jokatuko diren 10 partiduen zerrenda ditu. 
 * Klase honetatik, poltsa osotik 10 partiduak gehituko ditu jardunaldiari eta aldi berean poltsatik ezabatuko ditu.
 * @author Txantxangorriak
 *
 */

import java.util.ArrayList;
import java.util.Iterator;

public class Jardunaldia {
	private String data;
	private PartiduZerrenda partiduak;
	/**
	 * metodo eraikitzailea
	 * @param pData
	 */
	public Jardunaldia(String pData) {
		data=pData;
		partiduak=new PartiduZerrenda();
	}
	/**
	 * Metodo honekin partidu bat gehitu egiten da zerrendara
	 * @param pPart
	 */
	public void partiduaGehitu(Partidua pPart){
		partiduak.osagaiaGehitu(pPart);
	}
	/**
	 * Zerrendaren iteratzailea lortu egiten da
	 * @return Iterator<Partidua>
	 */
	public Iterator<Partidua> getIteratzailea(){
		return partiduak.getIteratzailea();
	}
	/**
	 * Metodo honekin jardunaldi bakoitzeko kiniela inprimatu egiten da
	 * @return String
	 */
	public String kinielaInprimatu(){
		
		String kiniela=partiduak.kiniela();
		return kiniela;
		
	}
	/**
	 * Metodo honekin partidua gehitu egiten da zerrendara
	 * @param poltsa
	 */
	//10 partidu gehitu aste horretan
	public void partiduakGehitu(ArrayList<Partidua> poltsa) {
		Iterator<Partidua> it= poltsa.iterator();
		int i=0;	
		Partidua part=null;
		
		while(it.hasNext() && i<10){
	
			part=it.next();
			if(partiduak.size()==0){
				partiduak.osagaiaGehitu(part);
				i++;
			}
			else{
			boolean emaitza=this.badago(part, partiduak);
			if(emaitza==false){
					partiduak.osagaiaGehitu(part);	
					i++;
					
				}
			}
		}
		partiduakEzabatu(partiduak, poltsa);
	}
	/**
	 * Metodo honekin partidua ezabatu daitezke zerrendatik
	 * @param partiduak2
	 * @param poltsa
	 */
	private void partiduakEzabatu(PartiduZerrenda partiduak2, ArrayList<Partidua> poltsa) {
		Iterator<Partidua> itPar= partiduak2.getIteratzailea();
		Partidua par=null;
		while(itPar.hasNext()){
			par=itPar.next();
			poltsa.remove(par);
		}
	}
	/**
	 * Metodo honekin partidu bate zerrendan badagoen begiratzen du
	 * @param pPart
	 * @param pPartJar
	 * @return boolean
	 */
	private boolean badago(Partidua pPart, PartiduZerrenda pPartJar) {
		boolean topatua=false;
		Iterator<Partidua> it=pPartJar.getIteratzailea();
		Partidua part2=null;
		while(it.hasNext())
			part2=it.next();
		if(pPart.getEtxekoTaldea().getIzena().equals(part2.getEtxekoTaldea().getIzena())||
				pPart.getBisitariTaldea().getIzena().equals(part2.getEtxekoTaldea().getIzena()) ||
				pPart.getEtxekoTaldea().getIzena().equals(part2.getBisitariTaldea().getIzena()) ||
				pPart.getBisitariTaldea().getIzena().equals(part2.getBisitariTaldea().getIzena())){
			topatua=true;
			
		}
		
		return topatua;
	}
	/**
	 * Metodo honekin data bueltatu egingo da
	 * @return String
	 */
	public String getData() {
		return data;
	}
	/**
	 * Metodo honekin jokalari baten golak lortu egiten dira
	 * @param jokalariak
	 * @param golak
	 */
	public void lortuJokalarienGolak(ArrayList<Jokalaria> jokalariak, ArrayList<Integer> golak) {
		
		
			partiduak.lortuJokalarienGolak(jokalariak,golak);
		
	}
	/**
	 * Metodo honekin partidu zerrenda bueltatu egiten da
	 * @return PartiduZerrenda
	 */
	public PartiduZerrenda getPartiduak() {
		return partiduak;
	}
	/**
	 * Metodo honekin partidu bat zehaztu egiten da zerrendan
	 * @param partiduak
	 */
	public void setPartiduak(PartiduZerrenda partiduak) {
		this.partiduak = partiduak;
	}
	/**
	 * Metodo honekin, liga hasieratu egiten da 
	 */
	public void simulazioaEgin() {
		
		partiduak.simulazioaEgin();
		
	}

}
